Buggy code:
public class LambdaExpression extends AbstractExpression { private static final long serialVersionUID = 1L ; private final List < ConstantExpression > argumentVariables ; private final List < Type > argumentTypes ; private final Expression body ; public LambdaExpression ( List < ConstantExpression > argumentVariables , Expression body ) { } public LambdaExpression ( List < ConstantExpression > argumentVariables , List < Type > argumentTypes , Expression body ) { } public Expression getBody ( ) { } public List < ConstantExpression > getArguments ( ) { } public List < Type > getArgumentTypes ( ) { } public Expression reduce ( List < Expression > argumentValues ) { <START_BUG> if ( ( argumentValues . size ( ) ) <= ( argumentVariables . size ( ) ) ) { <END_BUG> throw new ExpressionException ( ( ( ( ( ( "Too<seq2seq4repair_space>many<seq2seq4repair_space>arguments.<seq2seq4repair_space>Expected<seq2seq4repair_space>" + ( argumentVariables ) ) + "<seq2seq4repair_space>got<seq2seq4repair_space>" ) + argumentValues ) + ".<seq2seq4repair_space>This<seq2seq4repair_space>expression:<seq2seq4repair_space>" ) + ( this ) ) ) ; } Expression substitutedBody = body ; for ( int i = 0 ; i < ( argumentValues . size ( ) ) ; i ++ ) { Expression argumentValue = argumentValues . get ( i ) ; Set < ConstantExpression > argumentFreeVars = argumentValue . getFreeVariables ( ) ; Set < ConstantExpression > boundVars = substitutedBody . getBoundVariables ( ) ; for ( ConstantExpression boundVar : boundVars ) { if ( argumentFreeVars . contains ( boundVar ) ) { ConstantExpression newBoundVarName = ConstantExpression . generateUniqueVariable ( ) ; ConstantExpression newBoundVar = new ConstantExpression ( newBoundVarName . getName ( ) ) ; substitutedBody = substitutedBody . renameVariable ( boundVar , newBoundVar ) ; } } substitutedBody = substitutedBody . substitute ( argumentVariables . get ( i ) , argumentValue ) ; } if ( ( argumentValues . size ( ) ) == ( argumentVariables . size ( ) ) ) { return substitutedBody ; } else { if ( ( argumentTypes ) != null ) { return new LambdaExpression ( argumentVariables . subList ( argumentValues . size ( ) , argumentVariables . size ( ) ) , argumentTypes . subList ( argumentValues . size ( ) , argumentVariables . size ( ) ) , substitutedBody ) ; } else { return new LambdaExpression ( argumentVariables . subList ( argumentValues . size ( ) , argumentVariables . size ( ) ) , substitutedBody ) ; } } } public Expression reduceArgument ( ConstantExpression argumentVariable , Expression value ) { } @ Override public void getFreeVariables ( Set < ConstantExpression > accumulator ) { } @ Override public void getBoundVariables ( Set < ConstantExpression > accumulator ) { } @ Override public List < ConstantExpression > getLocallyBoundVariables ( ) { } @ Override public LambdaExpression renameVariable ( ConstantExpression variable , ConstantExpression replacement ) { } @ Override public Expression substitute ( ConstantExpression constant , Expression replacement ) { } @ Override public Expression simplify ( ) { } @ Override public boolean functionallyEquals ( Expression expression ) { } @ Override public Type getType ( TypeContext context ) { } @ Override public String toString ( ) { } @ Override public int hashCode ( ) { } @ Override public boolean equals ( Object obj ) { } }

Fix:
if ( ( argumentValues . size ( ) ) > ( argumentVariables . size ( ) ) ) {