Scaling contracts to realistic languages