public Diff difference()

in src/org/jetbrains/ether/dependencyView/ClassRepr.java [60:131]


    public Diff difference(final Proto past) {
        final ClassRepr pastClass = (ClassRepr) past;
        final Difference diff = super.difference(past);
        int base = diff.base();

        if (!superClass.equals(pastClass.superClass)) {
            base |= Difference.SUPERCLASS;
        }

        final int d = base;

        return new Diff() {
            @Override
            public boolean extendsAdded() {
                final String pastSuperName = ((TypeRepr.ClassType) ((ClassRepr) past).superClass).className.value;
                return (d & Difference.SUPERCLASS) > 0 && pastSuperName.equals("java/lang/Object");
            }

            @Override
            public boolean packageLocalOn() {
                return diff.packageLocalOn();
            }

            @Override
            public int addedModifiers() {
                return diff.addedModifiers();
            }

            @Override
            public int removedModifiers() {
                return diff.removedModifiers();
            }

            @Override
            public Difference.Specifier<TypeRepr.AbstractType> interfaces() {
                return Difference.make(pastClass.interfaces, interfaces);
            }

            @Override
            public Difference.Specifier<TypeRepr.AbstractType> nestedClasses() {
                return Difference.make(pastClass.nestedClasses, nestedClasses);
            }

            @Override
            public Difference.Specifier<FieldRepr> fields() {
                return Difference.make(pastClass.fields, fields);
            }

            @Override
            public Difference.Specifier<MethodRepr> methods() {
                return Difference.make(pastClass.methods, methods);
            }

            @Override
            public Specifier<ElementType> targets() {
                return Difference.make(pastClass.targets, targets);
            }

            @Override
            public boolean retentionChanged() {
                return !((policy == null && pastClass.policy == RetentionPolicy.CLASS) ||
                        (policy == RetentionPolicy.CLASS && pastClass.policy == null) ||
                        (policy == pastClass.policy)
                );
            }

            @Override
            public int base() {
                return d;
            }
        };
    }