public boolean equals(Object obj) {
        if (obj == null || obj.getClass() != getClass()) return false;
        final String name = ((FunctionImpl)obj).getName();
        return name != null && name.equals(getName()) || getName() == null;
      }
public boolean equals(Object obj)