

import java.util.*;
import Jakarta.util.FixDosOutputStream;
import java.io.*;

public class ThisPre {
    public void reduce2java( AstProperties props ) {

        // Step 1: reduce "this" construct to "this" (normal reduction)
		  //         if SoUrCe not seen or if we are inside a constructor

        Object o = props.getProperty( "insideConstructor" );
		  if ( props.getProperty( "SoUrCe" ) == null || o != null ) {
		      super.reduce2java( props );
				return;
		  }

        // Step 2: else we've seen a SoUrCe tag.  This means
		  //         that "this" is rewritten to "( (<classname>) this)"

        String ThisName = (String) props.getProperty( "ThisName" );
		  if (ThisName == null)
		     AstNode.fatalError( "ThisName property not set" );
		  props.print( getComment() + "((" + ThisName + ") this)");
    }
}
