Сравнивают промежуточное представление, а не восстановленный текст: восстановление зависит от средства и его версии, и два инструмента дадут разный текст из одного файла. Промежуточный код от этого не зависит и потому пригоден для сопоставления — сравнивают состав типов и их членов, структуру и порядок операций, тексты сообщений, схему данных.
Из сравнения сначала вычитают общее основание, причём в единицах того же представления: код пакетов, порождения среды разработки, стандартные конструкции языка и код, который дописывает сам компилятор, — развёрнутые асинхронные методы и перечислители, классы для замыканий, хранилища свойств. Последний слой совпадает у любых двух программ просто потому, что его создал один компилятор, и без его вычитания процент совпадения получается бессмысленно высоким.
Значимыми считают совпадения, которые общим основанием не объясняются, и каждое проверяют вручную, а не принимают по проценту сходства из инструмента. Само по себе совпадение направления заимствования не показывает: кто у кого, устанавливают по датам и истории, а вывод о нарушении прав делает суд. Развёрнуто задача разобрана на странице экспертизы плагиата исходного кода.