class ColumnMappingSupport implements EnvSupport {

    @Override
    public String columnMatch(Col column1, Col column2)
    {
        // fail fast in the comparison. Columns cannot match, by definition, if
        // they're in the same layer.
        if (StringUtils.equals(column1.owner.getTypeKey(), column2.owner.getTypeKey()))
        {
            return null;
        }

        if (StringUtils.equals(column1.name, column2.name))
        {
            return column1.name;
        }

        String mappedColumn1 = myMapper.getDefinedColumn(column1.owner.getTypeKey(), column1.name);
        String mappedColumn2 = myMapper.getDefinedColumn(column2.owner.getTypeKey(), column2.name);

        if (mappedColumn1 != null && mappedColumn1.equals(mappedColumn2))
        {
            return mappedColumn1;
        }

        // if nothing has matched yet, check the special keys:
        return specialKeyMatch(column1, column2);
    }

    public  ColumnMappingSupport(DataElementLookupUtils elementProvider, ColumnMappingController mappingController);

}