public int getSource(int target) { if (target == this.target) { return this.source; } else { return parent.getSource(target); } }
public boolean isIdentity() { // FIXME: It's possible that parent was not the identity but that // this overriding fixed it. return (source == target) && parent.isIdentity(); }
public Mapping inverse() { return new OverridingTargetMapping((TargetMapping) parent.inverse(), target, source); }
public MappingType getMappingType() { // FIXME: Mapping type might be weaker than parent. return parent.getMappingType(); }
public int size() { return parent.getSourceOpt(target) >= 0 ? parent.size() : parent.size() + 1; }