class ObjectProperty implements Serializable {

    @Override
    public boolean equals(Object obj) {
        if (obj instanceof ObjectProperty) {
            ObjectProperty other = (ObjectProperty)obj;
            return Objects.equals(object, other.object) && index == other.index
                    && Objects.equals(property, other.property);
        }
        return false;
    }

    public  ObjectProperty(Object object, @CheckForNull String property, int index);
    public  ObjectProperty(Object object, String property);
    public  ObjectProperty(Object object);

}