could not parse layer type PReLU (TensorRT 4.0.1.6)

Hi,

Despite using inbuilt function for creating PReLU layer, I am getting this message while parsing my prototxt/caffemodel:
could not parse layer type PReLU

There is no other detail. PluginFactory file is attached. Kindly advise.

Regards,
Anup

#include "NvCaffeParser.h"
#include "NvInferPlugin.h"

using namespace nvinfer1;
using namespace nvcaffeparser1;
using namespace plugin;

// integration for serialization
class PluginFactory : public nvinfer1::IPluginFactory, public nvcaffeparser1::IPluginFactory
{
public:
	// deserialization plugin implementation
	virtual nvinfer1::IPlugin* createPlugin(const char* layerName, const nvinfer1::Weights* weights, int nbWeights) override
	{
        std::cout << "DEBUG:\tInside virtual createPlugin." << std::endl;
		assert(isPlugin(layerName));
		if (!strcmp(layerName, "PReLU"))
		{
			assert(mPluginPReLU == nullptr);
			assert(nbWeights == 0 && weights == nullptr);
            std::cout << "DEBUG:\tCreating PReLUPlugin with weights Data." << std::endl;
			mPluginPReLU = std::unique_ptr<INvPlugin, decltype(nvPluginDeleter)>
				(createPReLUPlugin(*(float *)weights[0].values), nvPluginDeleter);
			return mPluginPReLU.get();
		}
		else
		{
            std::cout << "DEBUG:\tUnidentified layer." << std::endl;
			assert(0);
			return nullptr;
		}
	}

	IPlugin* createPlugin(const char* layerName, const void* serialData, size_t serialLength) override
	{
        std::cout << "DEBUG:\tInside createPlugin." << std::endl;
		assert(isPlugin(layerName));
		if (!strcmp(layerName, "PReLU"))
		{
			assert(mPluginPReLU == nullptr);
            std::cout << "DEBUG:\tCreating PReLUPlugin with serial Data." << std::endl;
			mPluginPReLU = std::unique_ptr<INvPlugin, decltype(nvPluginDeleter)>(createPReLUPlugin(serialData, serialLength), nvPluginDeleter);
			return mPluginPReLU.get();
		}
		else
		{
            std::cout << "DEBUG:\tUnidentified layer." << std::endl;
			assert(0);
			return nullptr;
		}
	}

	// caffe parser plugin implementation
	bool isPlugin(const char* name) override { return !strcmp(name, "PReLU"); }

    // User application destroys plugin when it is safe to do so.
    // Should be done after consumers of plugin (like ICudaEngine) are destroyed.
	void destroyPlugin()
	{
		mPluginPReLU.reset();
	}

	void(*nvPluginDeleter)(INvPlugin*) { [](INvPlugin* ptr) {ptr->destroy(); } };
	std::unique_ptr<INvPlugin, decltype(nvPluginDeleter)> mPluginPReLU{ nullptr, nvPluginDeleter };
};

Anybody from NVIDIA looking at this?

Regards,
Anup