Code Duplication    Length = 15-17 lines in 2 locations

src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/InstancePropertyFetchAnalyzer.php 2 locations

@@ 564-578 (lines=15) @@
561
            ) {
562
                $has_magic_getter = true;
563
564
                if (isset($class_storage->pseudo_property_get_types['$' . $prop_name])) {
565
                    $stmt_type = clone $class_storage->pseudo_property_get_types['$' . $prop_name];
566
567
                    $statements_analyzer->node_data->setType($stmt, $stmt_type);
568
569
                    self::processTaints(
570
                        $statements_analyzer,
571
                        $stmt,
572
                        $stmt_type,
573
                        $property_id,
574
                        $class_storage,
575
                        $in_assignment
576
                    );
577
                    continue;
578
                }
579
580
                $old_data_provider = $statements_analyzer->node_data;
581
@@ 674-690 (lines=17) @@
671
            $config = $statements_analyzer->getProjectAnalyzer()->getConfig();
672
673
            if (!$naive_property_exists) {
674
                if ($config->use_phpdoc_property_without_magic_or_parent
675
                    && isset($class_storage->pseudo_property_get_types['$' . $prop_name])
676
                ) {
677
                    $stmt_type = clone $class_storage->pseudo_property_get_types['$' . $prop_name];
678
679
                    $statements_analyzer->node_data->setType($stmt, $stmt_type);
680
681
                    self::processTaints(
682
                        $statements_analyzer,
683
                        $stmt,
684
                        $stmt_type,
685
                        $property_id,
686
                        $class_storage,
687
                        $in_assignment
688
                    );
689
                    continue;
690
                }
691
692
                if ($fq_class_name !== $context->self
693
                    && $context->self