 package flex.filters {  
 
 import flash.display.Shader;
+import flash.display.ShaderInput;
 import flash.display.ShaderParameter;
 import flash.display.ShaderParameterType;
+import flash.display.ShaderPrecision;
 import flash.events.Event;
 import flash.events.EventDispatcher;
 import flash.events.IEventDispatcher;

    /**
     * @private
     */  
    private var _precisionHint:String;

    /**
     * The precision of math operations performed by the shader.

     */
    private function applyProperty(property:String, value:*):void
    {
        if (!value) return;
        
        var suffixPattern:RegExp = /_.$/;
        var match:Array = property.match(suffixPattern);
        
        // If this property name contains a suffix, attempt to push the value
        // to the specified component of a multi-dimensional property.
        if (match && match[0] && !(value is Array))
        {
            var suffix:String = match[0];
