}
private Pipe applyCoercion( Pipe tail, Tap source )
{
Fields sourceFields = source.getSourceFields();
FieldTypeResolver fieldTypeResolver = getFieldTypeResolver();
Fields coercedFields = Fields.NONE;
int count = 0;
for( Comparable sourceField : sourceFields )
{
Type incoming = sourceFields.getType( sourceField );
Type outgoing = fieldTypeResolver.inferTypeFrom( count++, sourceField.toString() );
if( incoming != outgoing )
coercedFields = coercedFields.append( new Fields( sourceField, outgoing ) );
}