code: public Sql[] generateSql(CreateSynonymStatement statement, Database database, SqlGeneratorChain chain) {
  		StringBuilder sql = new StringBuilder("CREATE ");
  		if (statement.isReplace() != null && statement.isReplace()) {
  			sql.append("OR REPLACE ");
  		}
  
  		if (statement.isPublic() != null && statement.isPublic()) {
  			sql.append("PUBLIC ");
  		}
  
  		sql.append("SYNONYM ");
  
  		if (statement.getSynonymSchemaName() != null) {
  			sql.append(statement.getSynonymSchemaName()).append(".");
  		}
  
  		sql.append(statement.getSynonymName());
  		sql.append(" FOR ");
  
  		if (statement.getObjectSchemaName() != null) {
  			sql.append(statement.getObjectSchemaName()).append(".");
  		}
  
  		sql.append(statement.getObjectName());
  
  		return new Sql[] { new UnparsedSql(sql.toString()) };
  	}
docs: CREATE [OR REPLACE] [PUBLIC] SYNONYM [schema.]synonym FOR
  [schema.]object[@dblink] ;