debug("  Unhandled complex\n"); return null;
return new CClassNameType("Complex");
  public CType feirTypeToSirType(Type type) {    debug("In feirTypeToSirType\n");    if (type instanceof TypePrimitive) {      TypePrimitive tp = (TypePrimitive) type;      switch (tp.getType()) {      case TypePrimitive.TYPE_BIT:      case TypePrimitive.TYPE_INT:	return CStdType.Integer;      case TypePrimitive.TYPE_FLOAT:	return CStdType.Float;      case TypePrimitive.TYPE_DOUBLE:	return CStdType.Double;      case TypePrimitive.TYPE_COMPLEX:	/* BUG: not sure what to do about this one... */	debug("  Unhandled complex\n");	return null;      case TypePrimitive.TYPE_VOID:	return CStdType.Void;      }    } else if (type instanceof TypeArray) {      TypeArray ta = (TypeArray) type;      /* BUG: The length of the FEIR array is real and integral,	 but not necessarily constant -- the variables in it	 must be resolvable by constant propagation.  What to do? */      return new CArrayType(feirTypeToSirType(ta.getBase()),			    1);    } else if (type instanceof TypeStruct) {      return (CType) classTable.get(((TypeStruct) type).getName());    } else if (type instanceof TypeStructRef) {      return (CType) classTable.get(((TypeStructRef) type).getName());    }    /* This shouldn't happen */    debug("  UNIMPLEMENTED - shouldn't happen\n");    return null;  }