public static MethodStream_Item methodStreamItem(this Saved_MethodStream savedMethodStream,  O2MappedAstData astData, IMethod iMethod, MethodStream_ItemType itemType)
 		{ 						
 			var methodStreamItem = new MethodStream_Item();		
 			
			methodStreamItem.ItemType = itemType;
			
			if (iMethod.Parameters.Count > 0)
			{
				methodStreamItem.Parameters = new NameValueItems();
				foreach(var parameter in iMethod.Parameters) 
					methodStreamItem.Parameters.add(parameter.Name.str(), parameter.ReturnType.FullyQualifiedName);  
			}
			if (iMethod.Attributes.Count > 0)
			{
				methodStreamItem.Attributes = new NameValueItems();
				foreach(var attribute in iMethod.Attributes)
					methodStreamItem.Attributes.add(attribute.AttributeTarget.str(), attribute.AttributeType.FullyQualifiedName);  
			}
			
			methodStreamItem.Name = iMethod.name();
			methodStreamItem.Class = iMethod.DeclaringType.Name;  
			if (astData.file(iMethod).notNull())
				methodStreamItem.Location = new Location(astData, iMethod);
			methodStreamItem.Namespace = iMethod.DeclaringType.Namespace;  
			methodStreamItem.Signature = iMethod.fullName(); 
			methodStreamItem.ReturnType = iMethod.ReturnType.FullyQualifiedName;			
			methodStreamItem.DotNetName = iMethod.DotNetName;			
						
			return methodStreamItem;
		}
    	public Location(O2MappedAstData astData, IMethod iMethod)
    	{			
			File = astData.file(iMethod);
			
			var methodDeclaration = astData.methodDeclaration(iMethod);    					
			if (methodDeclaration.notNull())
			{
				Line = methodDeclaration.StartLocation.Line;
				Column = methodDeclaration.StartLocation.Column;			
				Line_End = methodDeclaration.EndLocation.Line;
				Column_End = methodDeclaration.EndLocation.Column;
			}
    	}